Collapsed distrubuted cooperative memory for interactive and scalale media-on-demand systems

ABSTRACT

This invention treats of a two-level cache management method for continuous media files of a proxy server. In the first level, the method reserves collapsed buffers in the cache for every active client attended by the proxy server. To save bandwidth and memory space collapsed buffers can be concatenated and overlapped when content belongs to the same continuous media file. The proxy manages collectively the collapsed buffers of each client, which cooperate by making its content available to the whole system, reducing traffic over the communication network and on the media-on-demand server. In the second level, the method allows proxy servers to cooperate between themselves, by concatenating collapsed buffers when necessary, increasing the amount of available shared media in the cache, saving bandwidth both on the media-on-demand server and on the communication network backbone.

TECHNICAL FIELD

The present invention refers to the cache management system (CMS) of aproxy server to store a single or multiple media of continuous flow suchas video or audio being accessed from a Media-on-Demand (MoD) server byone or several users. The proxy server hereafter called proxy, reservespart of its cache memory for every user that starts a multimediasession. In this way, users can have smaller buffers, which reduce costsof set-top-boxes and client equipments, since the user buffer iscomplemented by the client's part in the reserved cache of the proxy. Tooptimize cache performance, the reserved part for a client can besuperimposed by the part of another client, provided the two parts havethe same contents, thus avoiding replication of redundant contents andincreasing the rate of media reuse. These reserved cache parts can alsobe concatenated in such a way to further increase the reuse of mediacontents. The concatenation can happen inside of a single proxy cache orbetween several proxy caches in a cooperative way. The concatenation ofparts of proxy caches is also used to offer facilities of videocassetterecorder (VCR) operations. The non-reserved part of the cache is usedeither to store fragments of most popular media or to increase theconcatenation degree of the cache's reserved parts. In this way, it ispossible to increase the scalability of MoD systems while implementingVCR operations to offer an interactive system to the users of the MoDsystem.

PREVIOUS TECHNIQUES

The Distributed Cooperative Memory (DCM), as have been previouslydefined by PCT/BR 01/00029 of Mar. 26, 2001, changes the paradigm of thevideo-on-demand (VoD) system, from the conventional client-server to thepeer-to-peer one. DCM allows the implementation of scalable andinteractive VoD systems using a communication infrastructure based onsymmetrical large bandwidth in which the uplink bandwidth is equal tothe downlink bandwidth, allowing client uplink bandwidth to be exploitedso that client equipment can also become a server by recycling the videoflow that it receives. Such a communication infrastructure is more oftenavailable only at large companies, research centers, or at academicinstitutions, which currently restricts its use to corporative users.

The home user has no access yet to this kind of communicationinfrastructure, since providing it at a large scale is still unfeasibledue to the high implementation costs of the so-called ‘last-mile’. Thereexists a high-speed communication backbone, but connecting thousands ofusers to it through large-bandwidth links would require greatinvestments. However, those thousands of users are already connected toa telephony infrastructure based on copper wires, an investment that thetelecommunication companies want to preserve while taking advantage ofit to offer communication services based on large bandwidth. Anotheroption is to use wireless network technology, whose quick installationand cost-reduction trends, can make it a viable alternative for offeringlarge bandwidth access to the end user in the near future.

In this technological context, the ADSL (Asymmetrical Digital SubscriberLine) technology was developed, which enables a conventional telephoneline to transmit digital information, with downlink bandwidth being muchlarger than that of uplink and using the same pair of copper wiresalready installed at user's home. The explanation is that a clientusually receives much more information than sends, so that a clientuplink with small bandwidth to allow interactivity and voicetransmission is enough to support immediate user's needs, and theremainder bandwidth that can be exploited in conventional telephonelines is left to the client downlink. ADSL lines converge to a centralstation called DSLAM (Digital Subscriber Line Access Multiplexer),similar to a central telephone station, which in turn is interconnectedby a high-speed network. Recently, other access technologies groupedtogether under the acronym xDSL have been developed, which comprise bothsymmetrical and asymmetrical accesses with different data transmissionspeeds. Note that everything that has been stated for ADSLs can be alsoapplied to xDSLs.

In case of wireless access, the available bandwidth is also limited butalready guarantees bandwidth up to 12-Mbps for point-to-point access,which allows to comfortably transmitting a good-quality video. Forpoint-to-point wireless network also there exists a central access point(CAP) usually called the Head end.

In case of users being connected directly to a high-speed network eitherthrough a router or switch, either equipment becomes the access point.

To make viable the use of DCM within this kind of communicationinfrastructure, the client buffers of standard DCM were collapsed in thecentral access points (CPAs) such as DSLAMs, Head ends, orrouters/switches, in their existing memories or in proxies connected tothem. The proxies work on symmetrical and asymmetrical architectures,and can be located at any point of the network; the difference is thatthe proxy will use the C-DCM (Collapsed Distributed Cooperative Memory)for its cache management. To summarize, a proxy can be distinct from CPAor can be incorporated into it. The policy of cache management of aC-DCM proxy differs in several aspects from traditional policies such asLRU (Least Recently Used) or MRU (Most Recently Used) since theexploration of ‘hot data sets’ does not apply to large files. Also,C-DCM policy differs from multimedia policies such as BASIC, DISTANCE,INTERVAL CACHING (IC) and GENERALIZED INTERVAL CACHING (GIC) in thedetail of its operation, more specifically, in its way of allocatingbuffers to video flows. While traditional management methods search forincreasing cache hit rates using replacement of video contents, C-DCMguarantees cache hit by reserving part of the cache and usingreplacement policies only to increase even more the reuse of contents.C-DCM also differs from caches in disk since C-DCM's objective is tohave video content in memory so that it can be promptly transmitted tothe client whose buffer was collapsed in a nearby CPA. In other words,the main objective of C-DCM is not to store contents in disks, thoughthe use of disks is not excluded, on the contrary, disk storage hasadvantages that are orthogonal to the ones that C-DCM offers, so thatboth techniques can be used to increase system performance.

The cache management policies for multimedia systems, like MoD systems,take into account that multimedia objects are too large so storing theentire object in cache does not offer a good cost/benefit ratio.Therefore, these policies retain only fragments of objects not the wholeobject, besides they attempt to explore the relationship betweendifferent flows delivered to the clients, taking into account always thesequential access pattern.

C-DCM is different from standard DCM because it also works with anasymmetrical communication infrastructure, by centralizing the existingmemory space of client buffers in the central access points, andoffering a robust and optimized VoD service. In addition, C-DCMmaintains the advantages of standard DCM, since it alleviates the VoDserver and its communication links from an excessive workload in amanner that the resulting VoD system becomes scalable and interactive.

SUMMARY OF THE INVENTION

The present invention implements a method for memory cache management ofproxy servers for continuous media such as video and audio. The methodcan be divided in two parts. The first part treats the cache managementof a single proxy server, that is, the local C-DCM. The second partaddresses the cooperation between proxy servers to share media contentsthey store in their caches, that is, the distributed method of C-DCM.The C-DCM can be used in its local form as well as in its distributedform.

The local C-DCM method reserves a space in the proxy cache for eachclient that starts a session. This space represents part of the clientbuffer that was collapsed in the proxy. To manage all the independentcache spaces so as to avoid useless replication of contents whilemaximizing media reuse a circular structure of superimposed data iscreated. In this structure, the continuous media is represented by thelist of continuous media units (LCMU) and cache units called slots, forwhich clients make reservation, represented by the list of slot units(LSU).

If the continuous media is a video stream, the LCMU unit is given byGoFs (Group of Frames) that are indexed by timestamps in time units. Thesize of each LSU unit usually comprises several LCMU units. Since eachLCMU unit does not have necessarily a fixed size in time units, thenumber of LCMU units that a LSU can have is given by an average size,defined as the ratio given by the size of LSU unit divided by theaverage time of a GoF. Assuming that LCMU GoFs are preferably orderedclockwise and in increasing order of timestamps, the LSU rotatespreferably clockwise over the LCMU, which is fixed, and with a speedequal to that of the continuous media presentation. The LSU is also anordered list, but preferably counterclockwise.

Both LCMU and LSU are preferably lists of is pointers. The LCMU is alist that points to the cache area in which GoFs are stored. The LSU isa list that points in the LCMU the beginning and end of slots. If a LSUslot is reserved, its content, which lies between the two slot pointers,cannot be discarded.

On starting a session, the C-MCD manager reserves some contiguous LSUslots that correspond to the initial media content as requested by theclient. These contiguous slots correspond to the buffer that shouldexist at the client in its totality, being preferably mapped onto thebeginning and end pointers, read and write pointers, and maximum andminimum level pointers of the buffer.

The flow that arrives at a proxy is stored in the cache and mapped onthe LCMU with a reservation priority given by its corresponding slot atthat instant of time, that is, if between the read and end pointersthere is video content, this should not be discarded. If there iscontent after the end of buffer, it means that an overflow occurred,i.e., the GoF is eligible to be discarded, but with a lower prioritythan the GoF that has just left out of the buffer, since it has alreadybeen read.

Two users can start a session to watch the same media apart from a smalltime interval (less than a slot size), in this case the collapsedbuffers will share the same slots. If the time interval is larger than aslot, the collapsed buffers will share only the slots that overlap. Ifthe time interval between accesses is up to a slot greater than the sizeof collapsed buffer, the slots that comprise these buffers will becontiguous to ensure a continuous stream of stored media. If the timeinterval is one or more slots greater than the collapsed buffer, thereserved slots will not be contiguous, thus the contents of non-reservedslot(s) that join the collapsed buffers can be discarded from the cache,depending on both the popularity rank of the film and the distance untilnext reuse.

The lesser popular the film and larger the distance of its reuse (periodof time for the film to enter into the next collapsed buffer) thegreater is its probability of being discarded. Temporary slots can beused to reserve the content of slots between two buffers, provided thatthere is room in the cache and the distance between them is small.

In order to avoid keeping slots reserved and contents occupying memoryspace unnecessarily, a process of garbage collect periodically verifiesthe clients that become inactive and release the associate slots andcontents they reserved.

The distributed C-DCM allows the contents of proxies to be shared. Forthis purpose, every time a collapsed buffer needs to receive a flow torefill its content it will preferably ask for the flow to the nearestthe states of the proxies that form the system and will ask the contentdirectly to whom possesses it. Similarly, the collapsed buffers can beeither superimposed or concatenated, which guarantees the continuousmedia flow; in case they are not, temporary buffers can be created toguarantee that the flow content is not discarded unexpectedly.

BRIEF DESCRIPTION OF THE DRAWINGS

The goals, advantages, and characteristics of the invention are easierto understand and described better if the following detailed descriptionis read together with the following figures:

FIG. 1 shows a generic architecture of the system used in the presentinvention.

FIG. 2 shows the list of continuous media units and the list of slotunits in the circular form and the relationship between the lists.

FIG. 3 shows the conceptual divisions of the collapsed buffer and itsrelationship with the slots of the LSU.

FIG. 4 a is block diagram illustrating the relationship between variousdata structures used by C-DCM.

FIG. 4 b exemplifies the data structure of a unit of the list of medias.

FIG. 4 c exemplifies the data structure of a unit of the LSU.

FIG. 4 d exemplifies the data structure of a unit of LCMU.

FIG. 4 e exemplifies the data structure of a unit of LBA or LBL FIG. 5is a block diagram illustrating the proxy's components.

FIG. 6 is a flowchart describing an example of subroutine for admissionof new clients.

FIG. 7 is a flowchart describing an example of subroutine for cachereplacement of video units.

FIG. 8 is a flowchart describing an example of slot management process.

DETAILED DESCRIPTION OF THE INVENTION

The present invention implements a method to allocate collapsed buffersin proxies FIG. 1 50 and 60. The method uses a technique to determinewhether the content of a proxy's cache will be reused or not in thefuture, such that the proxy's cache space can be assigned (or released)to store new content so as to reduce the load on the MoD server FIG. 140 and reduce the communication traffic on the communication networkbackbone FIG. 1 10 and also that the content can be re-transmitted toother proxies so it can be reused by other clients in the system.

In the FIGS. 1, 20 and 30 are central access points, which can beDSLAMS, Head ends, or even routers or switches. The proxies FIG. 1 50and 60 can or cannot be embedded in the central access points.

The Client

Clients in the FIGS. 1, 80, 90, 100, 110 and 120 represent clientequipments from simple set-top-boxes to multimedia computers orresidential gateways. Clients connect preferably to the nearest proxy.The client equipment usually has a buffer to store segments ofcontinuous media for decoding purpose and also to reduce the problem ofsystem jitter (the statistical variance of delays). The larger is thejitter the greater is the amount of memory that is necessary to avoidoverflow or underflow in the client buffer. The task of managing thejitter that nearest proxy. In this way, the proxy will reserve a bufferfor that client, called collapsed buffer, which can be shared with otherclients, and thus can have other functions that will be detailedfurther. Since the jitter as perceived by the client will be the onefrom the last network segment, it will be smaller, and thus the clientbuffer can be shorter, reducing its cost.

The Implementation

There exist various parameters used to implement this method. FIG. 2shows a list that contains pointers to the elements of a continuousmedia flow, which is represented by the internal circumference 201. Theflow units vary from 0 to k-1. To this flow can or cannot be added otherunits to complete the circumference, the padding, which is representedin the FIG. 2 201 by the letter P.

An indexing unit can also represent a flow unit. An indexing unit can beas small as one bit or up to a set of bits such as a word, a set ofwords, a video frame, or even a set of video frames. The flow's contentis indexed in an ordered form so that the access to its content is notonly sequentially made but also can be made at random. The unit that isto be used in this report so as to exemplify the functioning of C-DCM isthe GoF (Group of Frame) of a compressed video based on the MPEGstandard, but it could be of any digital video format, whethercompressed or not. Integrated with List 201 there exists a list of slots301 that preferably rotates clockwise. The slots are numbered from 0 ton-1 and represent time intervals in such a way that these n slots havethe same duration as the media plus padding. Since the LSU 301 rotatesover list 201, new units of list 201 always enter to the slot as well asleave from it. Since the elements that enter and leave the slots arepointers to the cache, this does not means that a video unit enters intothe slot, but that it is possible through lists 201 and 301 to controlthe cache content. In the FIG. 2, slot n-2 contains the list elementsthat point to the video units from 4 to 7. For each media there will bea control structure composed by 201 and 301.

The control of contents uses the concept of collapsed buffer that is avirtual buffer mapped on the list 301 in the FIG. 2. A collapsed bufferis constituted of 4 slots as shown in the segment of list 301.

The Collapsed Buffer

A collapsed buffer 300 is divided as follows:

Beginning of buffer 310—it coincides with the end of slot s. Sooner GoFpointers pass this point they are marked as out of buffer, and thus witha higher priority to be discarded. The content within s has already beenread and sent to clients, but stay in with a certain priority ofreservation to make possible a rewind operation.

Read 320—it coincides with the beginning of slot s and points to thenext GoF to be viewed by the client. After passing this pointer, videoelements are marked as being already read.

Minimum 330—it coincides with the beginning of slot s+1 and indicateswhen the buffer is to reach the point of minimum level, generating asignal to the C-DCM manager to take the necessary measures to start anew flow to refill the buffer, avoiding a possible underflow. All of thecontent that it points to is reserved, and cannot be discarded.

Write 340—it points to the position where the next incoming GoF shouldbe stored. Usually, it should be located between pointers 330 and 350.If it is below 330 it indicates a risk of underflow and if it is above350 it indicates a risk of overflow.

Maximum 350—it coincides with the start of slot s+3. It indicates therisk of buffer overflow. When the buffer is reaching this level, theclient generates a signal to the C-DCM, which will take the necessaryactions to prevent a buffer overflow and corresponding lost of GoFs.

End 360—it coincides with the beginning of slot s+3. It indicates theend of physical space assigned to the buffer. The previous contentbefore this limit can be discarded. If this content will not be read, itcan be reserved with temporary slots.

Temporary Slots

These are slots that do not make part of collapsed buffers but can havetheir contents reserved for either concatenating or increasing thelength of collapsed buffers.

The Local Method

The cache content pointed to by each collapsed buffer is guaranteed tosupport one or more clients, i.e., the system cannot discard the cachecontent that is to be transmitted. Two or more collapsed buffers canhave their contents overlapped, that is, they are superimposed and thusshare slots in common. In this way, it avoids unnecessary replicationand optimizes the use of memory, which can be utilized to allocatetemporary buffers or to simply leave in the cache media contents thatare often accessed such as the initial part of films of large audience.Collapsed buffers that are superimposed or concatenated act as a singlebuffer regarded to the flow control that arrives at a proxy, and thiscontrol is performed by the buffer, called receiver, that receives theflow from another proxy or server. Other superimposed or concatenatedbuffers depend on the content that is already in the local memory, thusthe control of the receiver's buffer is enough to guarantee thenecessary content to other buffers.

A proxy should have preferably memory enough to allocate collapsedbuffers for its local clients. In case of proxy 50 as shown in the FIG.1, its clients are 80, 90, and 100, i.e., the clients that are served bythe central access point 20 to whom proxy 50 is connected. For reasonsof economy, a proxy can have less memory than necessary to allocate onecollapsed buffer for each active client, since the probability that allthese clients simultaneously open different media sessions is low. Inaddition, clients can share slots, mostly for popular films and duringperiods of time of large audience. On the other hand, if memory cost islow or if the objective is to maximize the reuse of media, a proxy canhave much more memory than necessary to allocate one collapsed bufferfor every local client.

The local C-DCM manager attempts to make continuous the greatestpossible amount of collapsed buffers locally. For this purpose it makesuse of temporary buffers. Once collapsed buffers become continuous, thenext objective is to minimize the amount of flows sent to local clients,that is, flows that are close enough are grouped so that a singlemulticast flow can be sent, which diminishes the proxy's I/O workload.

As an example, FIG. 5 shows a block diagram that illustrates proxies 50and 60. A proxy includes preferably a central processing unit (CPU) 510and memory 520. The CPU can be a single processor or multiple processorsin parallel. The instructions are stored in the memory (RAM, 510. TheCPU preferably has a Unit of Logical and Arithmetic (ULA), a Unit ofControl and a local memory such as cache of instructions and/or data orseveral registers. Such CPU architecture is well known. Proxy 50 or 60can or cannot be embedded in communication equipment, such as DSLAM,Head end, or router/commuter.

Proxy 50 or 60 in FIG. 1 is preferably composed of (FIG. 5) a slotmanagement process 530, a client admission subroutine 540, a subroutinefor cache replacement of video units 550, and a subroutine forinteractive operations 560, a process for garbage collection 570, and amanager process for distributed C-DCM 580 when there are two or morecooperative proxies, besides the cache itself 590.

A client request (cli) is processed by the client admission subroutine540, as shown by the example in the flowchart of FIG. 6. When a clientrequest arrives the list of medias (LM) 410 is searched for therequested media. If it is not found locally, the proxy moves towards theserver in search for the media's meta-information and creates one moreunit in the IM, together with LSU 430 and LCMU 450 structures, insertingthe client into the waiting list of the LM element 410 that correspondsto the request. If the request is already in the LM then the client isinserted in the waiting list as before. Next, the initial slot s in theFIG. 3 is computed, and into which the client will be inserted 610. Theinitial slot s is calculated by diminishing the current time TC fromstart time TI at which the LSU began to rotate over the LCMU less theinitial time TS (Time Stamp) of the requested segment in relation to thebeginning of the media. This value is also divided by the duration DS ofa slot; the result is submitted to a module operation using the numberof slots NS. To summarize, S=[(TC−TI−TS)/DS]% NS. As the client isrequesting the initial segment TS is equal to zero. If the slot hasalready a client 620, that is, there already has a flow to anotherclient, either unicast or multicast, starting from the GoF pointed bythe beginning of slot s 420, the client is inserted into that flow andthe part of flow that was missed, which is part of content under s, issent as a patch 625. C-DCM works on networks that do or do not supportmulticast, though in the latter it is possible to emulate multicastusing unicast. If slot s has no client, it is checked to see if thecontent that s encompasses until the minimum level 330 is in the cache630, if it is not, the proxy provides a new flow from either the serveror another proxy to provide the content 635. If the content is alreadyin the cache the proxy creates a collapsed buffer and updates the statusof slots that are within its limits, inserts the client that was in thewaiting list into slot s, and sends a patch if it is necessary 640. Ifthe buffer has a provider to supply the content 645 i.e. the client is areceiver then the admission process ends 680. Otherwise, it checks thedistance until the previous collapsed buffer 650. If that distance isless than the one that compensates for avoiding a new external flow, itattempts to allocate temporary buffers so as to benefit from the contentof the preceding receiver 670, provided there is enough space in thecache to allocate temporary slots 660, otherwise it starts a new flowwith the required content 655.

The C-DCM works with the client's reservation of part of the cachethrough the use of a collapsed buffer. However, the content that stayoutside of the buffer does not need to be discarded if there is room inthe cache. In this manner, most frequently accessed parts of a media cancontinue in cache such as the beginning of a video, as well as thecontents of temporary slots and contents that are left out of the cachedue to overflow, or even the content of a popular media. Nevertheless,if the cache is full there is a need for substituting the non-reservedcontent for one that is going to be inside of a reserved slot. When thecache is full the substitution of media units FIG. 7 takes into accountthe media popularity. In this way, all the media units are orderedaccording to its popularity rank 710 in increasing order, and startingwith that of lowest rank 720, the video units of highest priority ofdiscarding are removed, as follows: (1) the ones that have been alreadyread and are outside of the collapsed buffers; (2) the ones that in thebeginning of the media and are not reserved; (3) the ones that have notbeen read but due to overflow are outside of the collapsed buffers, andlastly (4) removing temporary buffers 730. On removing temporarybuffers, it is verified if there is a need to substitute them for anexternal flow, to supply the content of collapsed buffers on behalf ofthe temporary buffers that can be discarded 735. When choosing a mediaunit or temporary buffer to be discarded, in case of a tie, it will befirst discarded the one that is farther from the previous collapsedbuffer, that is, farther from being reused until the amount of necessarycache is released 740 and 750.

The collapsed buffer is a virtual C-DCM concept in that what does reallycontrol both content and flow is the slots. In the FIG. 3, a collapsedbuffer is illustrated with 4 slots, but it could have just a single slotor more than 5 slots, actually this is a question of convention. Everyslot has its status set in accord to its location in the collapsedbuffer or if it is a temporary one or if it is not reserved. If it isnot reserved it does not monitor its virtual content. The content issaid to be virtual because the slot does not store content, but onlyindicates which elements in the LCMU it is the manager of. If it isreserved, the slot manages its virtual content. Since the LSU rotatesover the LCMU, after some time interval, the LSU can have rotated sometimes around itself. To calculate the start and end of slot using themedia timestamp, it is necessary to know how many turns the slotperformed up to current time. Given the instant of time I at which theLSU started to rotate, the period of time VC for a complete turn (themedia duration plus padding), the current time A, and the position ofslot P, then the number of cycles is calculated by the initial time Iless current time A less slot position P times its length T divided by acomplete turn VC. Once the cycle is calculated, the slot start time isgiven by start time I less current time A less the number of cycles Ctimes the time VC for a complete turn less slot position P times itslength T. The end of slot FS is given by slot beginning IS less slotlength T 810.

Both IS and FS return a time value in relation to the media's starttime. Since GoFs can be accessed using either its sequential number orits timestamp, we can delimit the GoFs managed by a given slot throughthe simple calculation we described previously.

If a slot has the status of temporary slot the elements that pass thebeginning of slot are marked as temporarily reserved and after leavingthe slot they are marked as free 820.

If a slot is the slot s in the FIG. 3, the GoF that passes the end ofslot 310 will be marked as free and the one that passes the beginning ofslot 320 will be point the GoF will be multicast to other clients thathave been included in the list of clients of the slot 830.

If the slot is slot s+1 in the FIG. 3, for every element that passes thebeginning of the slot 330 it is verified to see if it is in the cache,and if it is not, it means that the provider failed, and a pre-overflowwarning is generated so that a new provider can be established 840.

Everything that a provider sends is written to the cache and the statusis updated in the LCMU as written but not read. If the slot is s+1, s+2,or s+3, as GoFs pass the beginning-of-slot pointer 330, 350, or 360,they are updated as written, not read, and reserved 820.

If the slot is s+2 in the FIG. 3, and upon verifying the element that ispassing the beginning of slot 350, besides updating its status, the slotgenerates a pre-overflow warning so that actions can be taken to avoidoverflow if necessary 840.

If the slot is s+3, all the GoFs that are in the cache upon passing thebeginning pointer 360 are updated as being not read and reserved 820.

For purposes of processing economy, the verification or/and updating ofGoFs in the beginning or end of a slot can be dismissed if the status ofthe GoFs are not altered when passing from a slot to another. Forexample, on consecutive temporary slots, the status is only altered inthe beginning of first slot and at the end of last slot.

The Distributed Method

Collapsed Buffers with non-empty intersection that are located indistinct proxies can be interconnected by a video flow that guaranteesthe receiver's minimum level, establishing cooperation between proxiesand the need for coordinating such a cooperation with the objective ofmaximizing the use of system resources.

The distributed C-DCM manager 580 tries to chain continuous buffers ofthe proxies in order to reuse their contents. To increase the chainingdegree so as to avoid the need of another flow from the server,continuous collapsed buffers can be augmented at the opposed end of thereceiver by using a temporary buffer. The allocation priority oftemporary slots depends on the amount of available memory and the numberof remote clients that will reuse the content. The allocation priorityis for small amount of temporary buffers that have high potential toserver large number of remote clients, and is inverse of the discardingpriority that is towards large number of temporary slots that have lowpotential of reuse (serve few clients). This is a question of tradingoff cache space (temporary buffers) for using bandwidth from bothnetwork backbone and server.

This means that, taking into consideration the slot hierarchy, in theabsence of memory space, the content of largest discarding priority isthe one that belongs to a non-reserved slot followed by the temporarybuffer. The contents of slots that belong to a collapsed buffer arediscarded only if the client stops using the system.

The distributed C-DCM manager as well as the local one maintains amapping of the proxies' continuous buffers. With this information, theC-DCM manager is capable of chaining collapsed buffers. The C-DCMmanager has to try to reuse the content of other proxies and only as thelast option to resort to the server, avoiding however to generate aping-pong traffic, which would congest the network backbone. To avoidping-pong traffic proxies, which in turn request to their neighborsuntil the requested content is found or the request message arrives atthe server. In this way, only the nearest proxy that has the requestedcontent will send it. The neighboring proxies and the server areconnected through persistent links that preferably reflect the networktopology. Another way to do so is making all the proxies to haveinformation about the state of other proxies, which is obtained in adistributed fashion, to calculate locally the proxy that will providethe requested content.

Interactive Operations

The interactive operations on the media comprise any client being ableto definitively stop the media exhibition, to pause it temporarily, tostart from the point it paused, to forward it to a certain point withinthe media and to start exhibiting the media from that point, and both tofast advance and to fast rewind while keeping exhibiting the media. Eachof these interactive operations will be described next.

Stop Operation

For this operation, the proxy simply moves the client out of its listand frees the reserved resources accordingly.

Pause Operation

In this operation, the proxy frees the slots of the collapsed buffer ofthe client that requested the operation, provided that there is noclients on the collapsed buffer, taking care to preferably reserve thecontent of s+2 and s+3 in the LCMU FIG. 3 as content of PAUSE andreleasing the provider or temporary buffers if they are unnecessary tomaintain the flow to other local or remote collapsed buffer; the contentof s and s+1 are in the client's local buffer. The client moves from thelist of active clients 436 to the list of clients in pause 420, whichbesides recording the client identity, stores information on whichcontent was reserved. A time limit can be established during which thecontent stays reserved as pause content, depending on the filmpopularity, so as to optimize the use of the cache.

Restart Operation

In this operation, the client informs the point at which the exhibitionshould restart. This procedure is similar to the one for clientadmission except that part of the content is already in the localbuffer, and part of it will be preferably in the cache. The reservedcontent in the cache during a pause is synchronized with the list ofslot units, removing the pause reservation and keeping only with theslot reservation. The slot that is to be synchronized is calculatedaccording to the formula already described to locate the initial slotwhen admitting a new client except that the initial time of segment isthe time of segment that is in the cache. The client also leaves thelist 420 and enters into the list 436 of slot s that forms its collapsedbuffer.

Jump Operation

In this operation, the client informs the point to which the mediashould advance, case of the media is being exhibited; the proxy freesthe reserved resources if they have not been reserved for other clientsand if they are unnecessary to maintain the flow to other local orremote collapsed buffer, after which the procedure is equal to theadmission of a new client, except that the film will not be exhibitedfrom the beginning but from the point that the client chose randomly,for which it uses the same formula described previously.

Fast Forward Operation

This and next operation are the ones that demand most of systemresources. Thus they should be used preferably together with the JUMPoperation, followed by rewinding or fast forwarding until arriving atthe desired point of the media. The quality of exhibition may besub-optimal so that if any lost of GoFs occur, they can be tolerated. Onasking for this operation, the slots of the client's collapsed bufferare reserved and controlled by the process for interactive operations(PIO) 560 that is created for the client. This process reservespreferably n slots ahead of the collapsed buffer, and prefetches thecontent that is missing in those n slots, from either the server or acooperative proxy. Since proxies keep information on the medias that arein their caches in the LM, LSU, and LCMU, these lists can be searched toverify if the requested media segment is in cache, and if it is not theproxy transfers the request for prefetching to the next cooperativeproxy, or to the server as the last resort. Given that this operationrequires transmission of n times more contents than the normal case, itis necessary that the non-read part of collapsed buffer has preferably asize n times greater to anticipate the prefetching for the content thatis going to be exhibited at high speed. As this augmented collapsedbuffer to move over the LCMU 450 with a different speed from that of LSU430, PIO 560 forces the augmented collapsed buffer moves over the LSU430 with a speed that is n-1 times the normal one. While reading thecontent if it does not have any other reservation the correspondingslots are released at the same n-1 speed for possible discard, if theslot is neither used by a temporary buffer nor belongs to a collapsedbuffer. For, the PIO 560 increments the fast-forward status 434 andinserts the client into the list of fast-forward 437, so as to makereservation ahead, while decrements the fast-forward status 434 andremoves the client from the list of fast-forward clients 437 for theslots behind. In addition, it sends the content to the client at a speedthat is n times superior to the normal one. Usually, n is equal two,i.e., it exhibits a speed that is twice faster than the normal one.

Fast Rewind Operation

This operation is implemented in a way similar to fast forward, exceptthat GoFs are reserved and prefetched backwards, making the augmentedcollapsed buffer to move over the LSU at a speed that is n+1 times thenormal one and on the opposite direction of exhibition.

The Garbage Collector

In the C-DCM the function of garbage collection 570 is to eliminatereservations left by any client that had a silent failure or simply leftthe system without warning, leaving slots and memory areas reserved. Theprocess of garbage collect 570, from time to time walks through the listof clients, checking if they are still actives, if it finds an inactiveclient, it removes the client from the list and if it is the only clientof a reserved slot, this slot is updated to become non-reserved and itscontent is released for discarding by the subroutine for substitution ofcontinuous media units in the cache.

1. “Collapsed distributed cooperative memory for interactive andscalable media-on-demand systems” characterized by, a method formanaging the cache memory of a proxy server associate to a continuousmedia file, the referred cache is managed through space reservation inthe cache memory to store segments of the continuous media file, thisspace of reserved memory in the cache works as a collapsed buffer inwhich segments of the continuous media file are continuously discardedto provide a place for subsequent segments of the same file, and thatfor every client of the system a collapsed buffer is allocated in thecache, and that the memory area of this buffer can be shared with otherbuffers provided that its content is the same, this method comprises thecreation of a circular list with indexing units of the continuous mediafile and another circular list of slots in such a way that there existsan surjection function between every element of the first list over anelement of the second list at any time, and that the circular list withthe indexing units of continuous media file points to the memory areawhere the file segment is stored, if this is in the cache, and that thecircular list of slots rotates over the circular list with indexingunits of continuous media file, or vice-versa, in such a way the newunits of indexing of continuous media file enter and leave the slot, andfor every client slots are reserved, these reserved slots form theclient's collapsed buffer and the content delimited by a reserved slotcannot be discarded, and that a single slot can make part of othercollapsed buffers, and that the segment of continuous media that is notdelimited by a reserved slot can be replaced by new data when there isno more cache space under any replacement policy.
 2. “Collapseddistributed cooperative memory for interactive and scalablemedia-on-demand systems” characterized by, a method for delimiting thecontent of any slot, from its beginning IS until its end FS, as afunction of initial time I, current time A, slot position P, slot sizeT, the time for a complete turn VC, and the number of complete turns Cgiven by the formulasC=(I−A−P*T)/VC, IS=I−A−C*VC−P*T and FS=IS−T.
 3. “Collapsed distributedcooperative memory for interactive and scalable media-on-demand systems”characterized by, a method to discover the slot S given the segment of arequested film as a function of current time TC, initial time TI, thestart time of the requested segment TS, the duration of slot DS, and thenumber of slots NS in the LSU, given by the formula S=[(TC−TI−TS)/DS]%NS. Assuming that the symbol % corresponds to the module operation. 4.Collapsed distributed cooperative memory for interactive and scalablemedia-on-demand systems” characterized by, a method for managing thecontent that is out of collapsed buffer, i.e., the reservation oftemporary slots to concatenate collapsed buffers or to augment collapsedbuffers when there is space in the cache, and to release temporary slotswhen there is no space in the cache, providing its replacement for aflow of external continuous media, if necessary.
 5. “Collapseddistributed cooperative memory for interactive and scalablemedia-on-demand systems” characterized by, a method for quick access tofilm segments for performing fast-forward and fast-rewind, with filmvisualization using collapsed buffers, which comprise, sending filmsegments necessary to fast exhibition of film (rewind or forward), theway the C-DCM manager finds the slots that have the requested segments,that is, walking through the list of slot units, the way to makereservation of multimedia content for fast exhibition, that is,augmenting the collapsed buffer with more slots, assuming that thisaugmented collapsed buffer walk through the list of slot units aiming atfollowing the fast transmission speed.
 6. “Collapsed distributedcooperative memory for interactive and scalable media-on-demand systems”characterized by, a method that allows the implementation ofvideocassette functions in a economically scalable video-on-demandsystem, comprising a proxy server that, on the pause operation, keepsthe content of collapsed buffer in the cache at that instant, so as todiminished the response time of the restart operation, on the pauseoperation, it verifies if the reserved slots for the collapsed buffer ofthe client that requested the pause are necessary to maintain the flowto the other collapsed buffers, if so and there is space in memory keepslots reserved, otherwise, provides a new and external flow of media, onthe restart operation, make reservation for slots of the collapsedbuffer, keeps consuming the reserved content over the pause, andprovides a constant flow of content through either reservation oftemporary slots or an external flow, on fast forward or rewind withoutexhibition, shift the collapsed buffer until the point the clientrequested.
 7. “Collapsed distributed cooperative memory for interactiveand scalable media-on-demand systems” characterized by, a distributedmethod for managing the cache of distributed proxies according to claim1, that is, the way to link collapsed buffers on different proxiesthrough the use of temporary buffers, if necessary and there existsspace in the cache, combined with a flow of continuous media from aproxy to the other.
 8. “Collapsed distributed cooperative memory forinteractive and scalable media-on-demand systems” characterized by, adistributed method to manage the content of collapsed buffers in thedistributed proxies according to claim 1, comprising, a proxy that knowswhere the flow that it receives comes from and where the flows it sendsis going to, also it knows the segment that is sending, a proxy thatknows how to communicate with another proxy, to ask where to is itsending the flow or where from is it receiving the flow, an intelligentproxy that using the above described capabilities, it know how to walkthrough collapsed buffers and contiguous temporary buffers, in order tolocate the necessary segment to supply or to complete the missingsegments of reserved slots.
 9. “Collapsed distributed cooperative memoryfor interactive and scalable media-on-demand systems” according to claim1, characterized by, using another data structure than that of circularlists, such as vectors, stacks, tables, matrices, or versions of suchstructures that economize memory space.
 10. “Collapsed distributedcooperative memory for interactive and scalable media-on-demand systems”according to claim 1, characterized by, a method to increase the marginof security, to guarantee the quality of presentation of video withoutundesirable exhibition stops, considering that when a collapsed bufferbecomes below its minimum level of work, it notifies the C-DCM managerso that it can provide another flow source.
 11. “Collapsed distributedcooperative memory for interactive and scalable media-on-demand systems”according to claim 1, characterized by, a method for memory garbagecollection, that is, the content that could be discarded, but it was notdue to pending reservations owing to missing client's notificationbecause of either silent failure or the client left the system withoutprevious notification.
 12. Collapsed distributed cooperative memory forinteractive and scalable media-on-demand systems” according to claim 1,characterized by, the method being executed by either a proxy server orany of dslam, head end, a commuter or router, whether it is or notembedded in the equipment.
 13. “Collapsed distributed cooperative memoryfor interactive and scalable media-on-demand systems” according to claim1, characterized by, only using unicast to emulate a multicast.